package com.steakliu.sun.boot.starter.prop;

import com.steakliu.sun.constant.SpringBootStarterConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 功能说明：
 * <p>
 * Original @Author: steakliu-刘牌, 2023-01-14  13:12
 * <p>
 * Copyright (C)2020-2022  steakliu All rights reserved.
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SunClientProperties {
    /**
     * 是否作为客户端，如果作为客户端为true，否则为false
     */
    private boolean open;
    /**
     * 版本号
     * @return
     */
    private String version;
    /**
     * 分组
     * @return
     */
    private String group;
    /**
     * 注册中心类型
     * @return
     */
    private String registryType;
    /**
     * 注册中心地址
     * @return
     */
    private String registryAddress;
    /**
     *序列化器
     * @return
     */
    private String serializer;
    /**
     * 代理
     * @return
     */
    private String proxy;
    /**
     * 服务调用超时市场
     * @return
     */
    private int timeout;
    /**
     * 是否异步调用
     * @return
     */
    private boolean async;
    /**
     * 是否单向调用
     * @return
     */
    private boolean oneway;
    /**
     *  回调方法
     * @return
     */
    private String callbackMethod;
    /**
     * 负载均衡类型
     * @return
     */
    private String loadBalance;
    /**
     * 结果缓存
     * @return
     */
    private boolean cache;
    /**
     * 缓存时长
     * @return
     */
    private int cacheTime;
    /**
     * 调用前执行方法
     * @return
     */
    private String beforeMethod;
    /**
     * 调用后执行方法
     * @return
     */
    private String afterMethod;
    /**
     * 调用失败重试次数
     * @return
     */
    private int retries;
    /**
     * 重试间隔
     * @return
     */
    private int retryInterval;
    /**
     * 心跳重试次数
     * @return
     */
    private int heartbeatRetries;
    /**
     * 心跳端来重连时间间隔
     * @return
     */
    private int heartbeatInterval;
    /**
     * 服务提供者验证token
     */
    private String token;
    /**
     * 直连某个或者某几个服务，多个用逗号隔开如（127.0.0.1:8080,127.0.0.1:8081）
     */
    private String directConnections;
    /**
     * 流控类型
     */
    private String flowControlType;
    /**
     * 是否使用流控
     */
    private boolean useFlowControl;
    /**
     * 并发核心线程数
     */
    private int concurrentCorePoolSize;
    /**
     * 并发最大线程数
     */
    private int concurrentMaximumPoolSize;
    /**
     * 反射类型
     */
    private String reflectType;
    /**
     * 是否使用限流
     */
    private boolean useRateLimit;
    /**
     * 限流类型
     */
    private String rateLimiterType;
    /**
     * 毫秒数
     */
    private int milliseconds;
    /**
     * 限流每毫秒的资源数
     */
    private int permits;
    /**
     *
     */
    private String rateLimiterFailStrategy;
    /**
     * 是否使用请求缓冲
     */
    private boolean enableBuffer;
    /**
     * 缓冲类型
     */
    private String bufferType;

}
